// 若在开发者工具中无法预览广告，请切换开发者工具中的基础库版本
// 在页面中定义激励视频广告
let videoAd = null
// 若在开发者工具中无法预览广告，请切换开发者工具中的基础库版本
// 在页面中定义插屏广告
let interstitialAd = null

import * as echarts from '../../../components/ec-canvas/echarts.min';
import {
  get7Day
} from '../../../utils/visible'

// 配置折线图的
let option = {
  title: {
    text: '最近7天的收支明细',
    left: 'center'
  },
  legend: {
    data: ['收入', '支出', '余额'],
    top: 50,
    left: 'center',
    z: 100
  },
  grid: {
    containLabel: true
  },
  tooltip: {
    show: true,
    trigger: 'axis'
  },
  xAxis: {
    type: 'category',
    boundaryGap: false,
    data: ['05/23', '05/24', '05/25', '05/26', '05/27', '05/28', '05/29'],
    // show: false
  },
  yAxis: {
    x: 'center',
    type: 'value',
    splitLine: {
      lineStyle: {
        type: 'dashed'
      }
    }
    // show: false
  },
  series: [{
    name: '收入',
    type: 'line',
    smooth: true,
    data: [18, 36, 65, 30, 78, 40, 33],
    color: "#00B26A"
  }, {
    name: '支出',
    type: 'line',
    smooth: true,
    data: [12, 50, 51, 35, 70, 30, 20],
    color: "#CF4A34"
  }, {
    name: '余额',
    type: 'line',
    smooth: true,
    data: [10, 30, 31, 50, 40, 20, 10],
    color: "#FAC858"
  }]
};

function initLine(canvas, width, height, dpr) {
  let chart = echarts.init(canvas, null, {
    width: width,
    height: height,
    devicePixelRatio: dpr // new
  });
  canvas.setChart(chart);
  // 提取 option 对象
  chart.setOption(option);
  return chart;
}

// 获取当前年分
function getCurrentYear() {
  let date = new Date();
  let YY = date.getFullYear();
  return `${YY}`
}
// 获取当前月份
function getCurrentMonth() {
  let date = new Date();
  let MM = date.getMonth() + 1;
  MM = MM < 10 ? '0' + MM : MM;
  return `${MM}`
}

// 格式换人民币
function formatMoney(value) {
  let str = Math.abs(value).toString()
  let txt = '';
  if (str.includes('.')) {
    let i = str.lastIndexOf('.')
    let value = str.slice(i + 1)
    if (value.length == 1) {
      txt = str + "0"
    } else {
      txt = str + "";
    }
  } else {
    txt = str + ".00"
  }
  return txt;
}

// 最近7天的日期数组
let dates = get7Day();
// console.log("--->", dates);
Page({
  /**
   * 页面的初始数据
   */
  data: {
    date: `${getCurrentYear()}/${getCurrentMonth()}`,
    year: getCurrentYear(),
    years: [
      '2025',
      '2024',
      '2023',
      '2022',
      '2021',
      '2020',
    ],
    indexY: 0,
    month: getCurrentMonth(),
    months: [
      '01',
      '02',
      '03',
      '04',
      '05',
      '06',
      '07',
      '08',
      '09',
      '10',
      '11',
      '12'
    ],
    indexM: 0,
    datetime: '',
    monthList: [],
    currentMonthIncome: '0.00',
    currentMonthOutcome: '0.00',
    currentMonthTotal: '0.00',
    // 定义数组获取本地存储的数据
    elements: [],
    //制作可视化数据图表
    ecLine: {
      onInit: initLine,
    },

    isShow2: false,
    imgSrc: '/static/qrcode.jpg',
    copyText: '记账小程序链接: https://pan.baidu.com/s/1kYv6eko3Xvf8mmcivo1w1A?pwd=wd8t 提取码: wd8t'
  },

  // 选择器 选择年份
  bindYearsChange: function (e) {
    console.log('年份的索引值', e.detail.value)
    let year = this.data.years[e.detail.value]
    this.setData({
      indexY: e.detail.value,
      year: year,
      date: `${year}/${this.data.month}`
    })
    this.getCurrentMonthList();
  },
  // 选择器 选择月份
  bindMonthsChange: function (e) {
    console.log('月份的索引值', e.detail.value)
    let month = this.data.months[e.detail.value]
    this.setData({
      indexM: e.detail.value,
      month: month,
      date: `${this.data.year}/${month}`
    })
    this.getCurrentMonthList();
  },
  // 编写函数获取最近7天的记录
  get7DayElements() {
    let arr = this.data.elements;
    // console.log("所有记录:", arr)
    let result = arr.filter(item => {
      // 判断elements里面每一个记录是否在最近7天这个数组中 是，返回true
      for (let i = 0; i < dates.length; i++) {
        if (item.datetime.includes(dates[i])) {
          return true;
        }
      }
    })
    // console.log("过滤后的数据:", result)

    // 整合数据
    // 定义收入 支出 余额 三个数组
    let arr1 = [0, 0, 0, 0, 0, 0, 0],
      arr2 = [0, 0, 0, 0, 0, 0, 0],
      arr3 = [0, 0, 0, 0, 0, 0, 0];
    // 循环result数组
    for (let i = 0; i < dates.length; i++) {
      for (let j = 0; j < result.length; j++) {
        if (result[j].datetime.includes(dates[i])) {
          if (result[j].num == '1') {
            // 统计每一天的支出
            arr2[i] += result[j].money * 1000;
          }
          if (result[j].num == '2') {
            // 统计每一天的收入
            arr1[i] += result[j].money * 1000;
          }
          // 计算余额
          arr3[i] = arr1[i] - arr2[i]
        }
      }
    }
    // 把每一天的数据
    for (let i = 0; i < 7; i++) {
      // arr1[i] =  arr1[i]/1000
      // arr2[i] =  arr2[i]/1000
      // arr3[i] =  arr3[i]/1000
      option.series[0].data[i] = arr1[i] / 1000
      option.series[1].data[i] = arr2[i] / 1000
      option.series[2].data[i] = arr3[i] / 1000
    }
    console.log(arr1, arr2, arr3)
    // 更新可视化图表的配置
    // console.log('---->',option.series)
    // option.series[0].data = arr1; // 收入
    // option.series[1].data = arr2; // 支出
    // option.series[2].data = arr3; // 余额
    // 设置可视化图表
    this.setData({
      ecLine: {
        onInit: initLine,
      }
    })
  },
  // 长按删除记录
  removeItem(event) {
    let id = event.currentTarget.dataset.id;
    let elements = this.data.elements;
    console.log({
      id
    });
    let that = this;
    wx.showModal({
      title: '温馨提示',
      content: '是否删除该记录',
      complete: (res) => {
        if (res.cancel) {

        }

        if (res.confirm) {
          // console.log({id})
          let arr = elements.filter(item => {
            if (id != item.id) {
              return item;
            }
          })
          that.setData({
            elements: arr
          })
          // 再把数据存储起来
          wx.setStorageSync('ELEMENTS_JIZHANG', arr)
          that.getCurrentMonthList();
        }
      }
    })
  },
  // 编写方法获取本地存储的数据
  getElements() {
    let elements = wx.getStorageSync('ELEMENTS_JIZHANG');
    //  console.log("1.0",elements)
    if (elements) {
      this.setData({
        elements
      })

      let newArr = elements.map(item => {
        item.money = formatMoney(item.money)
        return item;
      })

      this.setData({
        MonthList: newArr
      })
    }
  },

  // 编写函数获取当月数据
  getCurrentMonthList() {
    let elements = this.data.elements;
    let date = this.data.date;
    console.log("年月:", date); // 2025/05
    let arr = elements.filter(item => {
      if (item.datetime.includes(date)) {
        return item;
      }
    })
    // console.log("---->",arr)
    if (arr.length == 0) {
      this.setData({
        currentMonthIncome: formatMoney(0),
        currentMonthOutcome: formatMoney(0),
        currentMonthTotal: formatMoney(0),
        monthList: []
      })
    } else {
      // 当前月份的存钱
      let currentMonthIncome = 0
      // 当前月份的支出
      let currentMonthOutcome = 0
      // 循环当前月份的数组
      for (let i = 0; i < arr.length; i++) {
        if (arr[i].num == '1') {
          currentMonthOutcome += (arr[i].money) * 1000
        }
        if (arr[i].num == '2') {
          currentMonthIncome += (arr[i].money) * 1000
        }
      }
      let currentMonthTotal = currentMonthIncome - currentMonthOutcome;

      // 整合数据
      let newArr = arr.map(item => {
        item.total = 0;
        item.income = 0;
        item.outcome = 0;
        item.Month = item.datetime.slice(0, 7);
        if (item.num == '1') {
          item.outcome += (item.money - 0) * 1000
        }
        if (item.num == '2') {
          item.income += (item.money - 0) * 1000
        }
        item.total = item.income - item.outcome;
        return item;
      })
      // console.log('---->',newArr)

      // 把每一天的收入和支出都计算好
      let result = newArr.map(item => {
        item.outcome = formatMoney(item.outcome / 1000)
        item.income = formatMoney(item.income / 1000)
        item.total = formatMoney(item.total / 1000)
        // 2025/05/28
        // item.date = item.datetime.toString().slice(0,10)
        item.date = item.datetime
        return item;
      })

      // 定义月份

      // 赋值
      this.setData({
        currentMonthIncome: formatMoney(currentMonthIncome / 1000),
        currentMonthOutcome: formatMoney(currentMonthOutcome / 1000),
        currentMonthTotal: formatMoney(currentMonthTotal / 1000),
        monthList: result
      })
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getElements();
    this.getCurrentMonthList();
    this.get7DayElements();

    // 在页面onLoad回调事件中创建激励视频广告实例
    if (wx.createRewardedVideoAd) {
      videoAd = wx.createRewardedVideoAd({
        adUnitId: 'adunit-234ba9a4e19db710'
      })
      //
      videoAd.onLoad(() => {})
      videoAd.onError((err) => {
        console.error('激励视频光告加载失败', err)
      })
      videoAd.onClose((res) => {
        if (res && res.isEnded) {
          // 正常播放结束，可以下发游戏奖励
          this.setData({
            isShow2: true
          })
        } else {
          // 播放中途退出，不下发游戏奖励
        }
      })
    }

    // // 在页面onLoad回调事件中创建插屏广告实例
    // if (wx.createInterstitialAd) {
    //   interstitialAd = wx.createInterstitialAd({
    //     adUnitId: 'adunit-8f6498dcc2696667'
    //   })
    //   interstitialAd.onLoad(() => {})
    //   interstitialAd.onError((err) => {
    //     console.error('插屏广告加载失败', err)
    //   })
    //   interstitialAd.onClose(() => {})
    // }

    // // 在适合的场景显示插屏广告
    // if (interstitialAd) {
    //   interstitialAd.show().catch((err) => {
    //     console.error('插屏广告显示失败', err)
    //   })
    // }


  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getElements();
    this.getCurrentMonthList();
    this.get7DayElements();
  },
  // 显示广告，观看完成可以领取资料的方法
  showVideoAdFn() {
     wx.showModal({
       title: '温馨提示',
       content: '完整观看视频广告，获取小程序源代码和制作教程',
       complete: (res) => {
         if (res.cancel) {
           
         }
     
         if (res.confirm) {
          try {
            // 用户触发广告后，显示激励视频广告
            if (videoAd) {
              videoAd.show().catch(() => {
                // 失败重试
                videoAd.load()
                  .then(() => {
                    videoAd.show()
                  })
                  .catch(err => {
                    console.error('激励视频 广告显示失败', err)
                  })
              })
            }
          } catch (e) {
            console.log(e)
          }
         }
       }
     })
  },

  // 原生模板广告
  adLoad() {
    console.log('原生模板广告加载成功')
  },
  adError(err) {
    console.error('原生模板广告加载失败', err)
  },
  adClose() {
    console.log('原生模板广告关闭')
  },
  // 长按保存
  saveImage(e) {
    let that = this
    wx.showActionSheet({
      itemList: ['保存到相册'],
      success(res) {
        let url = e.currentTarget.dataset.url;
        wx.getSetting({
          success: (res) => {
            console.log(res);
            if (!res.authSetting['scope.writePhotosAlbum']) { // 未授权
              wx.authorize({
                scope: 'scope.writePhotosAlbum',
                success: () => {
                  that.saveImgSuccess(url);
                },
                fail: (res) => {
                  console.log(res);
                  wx.showModal({
                    title: '保存失败',
                    content: '请开启访问手机相册的权限',
                    success(res) {
                      wx.openSetting()
                    }
                  })
                }
              })
            } else { // 已授权
              that.saveImgSuccess(url);
            }
          },
          fail: (res) => {
            console.log(res);
          }
        })
      },
      fail(res) {
        console.log(res.errMsg)
      }
    })
  },
  // 同意授权保存到相册
  saveImgSuccess(url) {
    wx.getImageInfo({
      src: url, // 通过getImageInfo将src转换成改图片的本地路径，给saveImageToPhotosAlbum使用
      success: (res) => {
        console.log(res)
        let path = res.path;
        wx.saveImageToPhotosAlbum({
          filePath: path, // filePath路径不能是网络图片路径
          success: (res) => {
            console.log(res);
            wx.showToast({
              title: '已保存到相册',
            })
          },
          fail: (res) => {
            console.log(res);
          }
        })
      },
      fail: (res) => {
        console.log(res);
      }
    })
  },
  // 查看大图
  imgClick() {
    var imgUrl = this.data.imgSrc;
    console.log('imgClick success', imgUrl)
    wx.previewImage({
      current: imgUrl, //当前显示图片的链接
      urls: [imgUrl], //需要预览的图片链接列表
      success: (res => {
        console.log('接口调用成功', res)
      })
    })
  },
  // 点击复制
  copyAction() {
    wx.setClipboardData({
      data: this.data.copyText || e.currentTarget.dataset.copytext, //这是复制的内容
      success(res) {
        wx.getClipboardData({
          success(res) {
            wx.showToast({
              title: '复制成功',
            })
          }
        })
      }
    })
  },
})